package com.example.work.entiy;

import lombok.Data;

import java.io.Serializable;

/**
 * 部侧资产信息与IP端口信息组合DTO
 * 对应SQL查询结果，包含division_asset_info表的所有字段
 * 以及division_asset_ip_port_info表的asset_ip和合并后的ports字段
 */
@Data
public class DivisionAssetInfoWithIpPorts extends DivisionAssetInfo implements Serializable {


    
    /**
     * 端口列表
     * 来自division_asset_ip_port_info表的端口列表
     * 使用GROUP_CONCAT合并的逗号分隔的端口字符串
     * 示例："80,443,8080"
     */
    private String ports;

    /**
     * 是否可从互联网访问
     * 0-否，1-是
     */
    private Integer isAccess;




    /**
     * IP类型
     * 0-IPv4, 1-IPv6
     */
    private Integer ipType;



    /**
     * 管理业务标识
     * 0-管理地址，1-业务地址
     */
    private Integer manageTag;

    /**
     * 网络位置
     * 0-内网，1-外网
     */
    private Integer netPosition;




    /**
     * 新的资产id
     */
    private String oldDivisionAssetId;



    //新增类型，insert（1） 或者 update（2）
    private String insertType;


    /**
     * 创建一个用于匹配的关键字
     * 由 资产IP + 端口列表(逗号分隔) + 资产类型代码 组成
     * 示例："192.168.1.1|80,443,8080|SERVER"
     */
    public String createMatchKey() {
        String assetTypeCode = super.getReportAssetType() != null ? super.getReportAssetType() : "";
        String portStr = this.ports != null ? this.ports : "";
        String ipStr = this.getAssetIp() != null ? this.getAssetIp() : "";
        return ipStr + "|" + portStr + "|" + assetTypeCode;
    }
}